#include "Punto.h"

Punto::Punto() : x(0), y(0) {}
Punto::Punto(const int _x, const int _y) : x(_x), y(_y) {}
int Punto::X() const { return x; }
int Punto::Y() const { return y; }

Punto Punto::operator + (const Punto& posicion)
{
	return Punto(x+posicion.x,y+posicion.y);
}

Punto Punto::operator - (const Punto& posicion)
{
	return Punto(x-posicion.x,y-posicion.y);
}

Punto Punto::operator * (const int n)
{
	return Punto(x*n,y*n);
}

Punto Punto::operator / (const int n)
{
	return Punto(x/n,y/n);
}

Punto Punto::operator % (const int n)
{
	return Punto(x%n,y%n);
}

Punto& Punto::operator += (const Punto& posicion)
{
	x += posicion.x;
	y += posicion.y;
	return *this;
}

Punto& Punto::operator -= (const Punto& posicion)
{
	x -= posicion.x;
	y -= posicion.y;
	return *this;
}

ostream& operator << (ostream& os, const Punto& punto)
{
	os << '(' << punto.x << ',' << punto.y << ')';
}

